package djboom.materials.display.devices {
	import djboom.materials.core.BitmapDataCore;
	import djboom.materials.display.elements.HotSpot;
	import djboom.materials.display.elements.SimpleSmartSprite;
	import djboom.materials.events.InstructionEvent;

	import com.greensock.TweenLite;

	import org.casalib.display.CasaBitmap;

	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;

	/**
	 * Газовая горелка.
	 * <br>
	 * 
	 * @author DJ BooM 
	 * @since 24.09.2010
	 * 
	 */

	public class GasBurner extends SimpleSmartSprite {

		// ----------------------------------------------------------------------------
		// Константы класса.
		// ----------------------------------------------------------------------------
		
		/**
		 * Картинки.
		 * 
		 */

		private static const BURNER:String = "work2.gas.Burner";
		private static const RULER:String = "work2.gas.BurnerRuler";		private static const FLAMES:String = "work2.Flames";

		// ----------------------------------------------------------------------------
		// Свойства класса.
		// ----------------------------------------------------------------------------

		private var _burner:CasaBitmap;
		private var _ruler:HotSpot;		 
		private var _flames:MovieClip;

		// ----------------------------------------------------------------------------
		// Конструктор.
		// ----------------------------------------------------------------------------

		public function GasBurner() {
			super();
			
			_burner = new CasaBitmap(BitmapDataCore.getBitmapData(BURNER));
			addChild(_burner);
			
			_ruler = new HotSpot();
			_ruler.drawBitmap(BitmapDataCore.getBitmapData(RULER));
			_ruler.x = 232;			_ruler.y = 121;
			addChild(_ruler);
		}	 

		// ----------------------------------------------------------------------------
		// Приватные методы класса.
		// ----------------------------------------------------------------------------

		private function enableGas(event:MouseEvent):void {
			_ruler.removeEventListener(MouseEvent.CLICK, enableGas);
            
			TweenLite.to(_ruler, 0.1, {transformAroundCenter:{rotation: 90}});
            
			_flames = BitmapDataCore.getMovieClip(FLAMES);
			_flames.x = 55;
			_flames.y = 109;
			addChild(_flames);
			
			dispatchEvent(new InstructionEvent(InstructionEvent.REFRESH));
		}

		private function disableGas(event:MouseEvent):void {
			_ruler.removeEventListener(MouseEvent.CLICK, disableGas);
            
			TweenLite.to(_ruler, 0.1, {transformAroundCenter:{rotation: 0}});
            
			_flames.stop();
			_flames.visible = false;
			removeChild(_flames);
			_flames = null;
			
			dispatchEvent(new InstructionEvent(InstructionEvent.REFRESH));
		}

		// ----------------------------------------------------------------------------
		// Видимые методы класса.
		// ----------------------------------------------------------------------------
	
		// ----------------------------------------------------------------------------
		// Переопределенные методы.
		// ----------------------------------------------------------------------------

		override public function initSprite(event:Event):void {
			super.initSprite(event);
		}

		override public function clearContent(event:Event):void {
			super.clearContent(event);
		}

		// ----------------------------------------------------------------------------
		// Обработчики событий.
		// ----------------------------------------------------------------------------

		// ----------------------------------------------------------------------------
		// Публичные методы.
		// ----------------------------------------------------------------------------

		/**
		 * Включаем горелку.
		 * 
		 */

		public function enable():void {
			_ruler.addEventListener(MouseEvent.CLICK, enableGas);
		}

		/**
		 * Выключаем горелку.
		 * 
		 */

		public function disable():void {
			_ruler.addEventListener(MouseEvent.CLICK, disableGas);
		}
        
		// ----------------------------------------------------------------------------
		// Методы доступа.
		// ----------------------------------------------------------------------------
	}
}
